package models

import (
	"strconv"

	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
)

// 返回状态值说明：
// 0：购买成功
// 1：购买失败，用户不存在
// 2：购买错误，没有余票
// 3：购买失败，余额不足
//4：购买失败，参数格式错误
func Purchase(name string, seats []string) int8 {
	user, status1 := CheckUsr(name)
	if status1 == 1 {
		// 1：购买失败，用户不存在
		return 1
	}
	var err error
	var seatid int64
	o := orm.NewOrm()
	for _, seat := range seats {
		seatid, err = strconv.ParseInt(seat, 10, 64)
		beego.Error(seatid)
		if err != nil {
			//4：购买失败，参数格式错误
			beego.Error(err)
			return 4
		}
		// var Totalprice float64
		// Totalprice, err = strconv.ParseFloat(totalprice, 64)
		// var TickerNum int64
		// TickerNum, err = strconv.ParseInt(tickerNum, 10, 64)
		userseat, statusseat := Checkfilmseat(seatid)
		if statusseat != 0 {
			// 2：购买失败，没有余票
			return 2
		}

		// 执行购票+j
		if user.Balance >= userseat.SessionPrice {
			// 更新用户余额数据
			user.Balance = user.Balance - userseat.SessionPrice
			o.Update(user)
			//更新座位数据
			userseat.SeatStatus = true
			userseat.UserId = user.Id
			o.Update(userseat)
			userorder := new(Order)
			//在订单表插入数据

			userorder.FilmId = userseat.FilmId
			userorder.UserId = user.Id
			userorder.OrderStatus = "0"
			userorder.SeatId = seatid
			// userorder.TotalPrice = Totalprice
			// userorder.TickerNum = TickerNum
			userorder.Number = GetRandomString(11)
			o.Insert(userorder)
		} else {
			// 3：购买失败，余额不足
			return 3
		}
	}

	return 0
}

// 购买电影票的处理流程
// 1.查询Film表获取所要购买的电影票的相关信息
// 2.检查电影状态，是否有余座
// 3.如果一切正常执行购票
// 4.微信支付
